var snabbdom = require('../../snabbdom.js');
var patch = snabbdom.init([
	require('../../modules/attributes'),
	require('../../modules/style'),
	require('../../modules/eventlisteners')
]);
var h = require('../../h.js');

var vnode;

var data = {
	degRotation: 0
};

function gRotation() {
	//console.log("gRotation: %s", data.degRotation);
	return "rotate(" + data.degRotation + "deg)";
}

function triangleClick(id) {
	console.log("triangleClick: %s", id);
	render();
}

function handleRotate(degs) {
	data.degRotation += degs;
	console.log("handleRotate: %s, %s", degs, data.degRotation);
	render();
}

function handleReset(degs) {
	data.degRotation = degs;
	console.log("handleReset: %s", degs);
	render();
}

function render() {
	vnode = patch(vnode, view(data));
}

const hTriangle = (id, degRotation) =>
	h("polygon#" + id, {
		attrs: {
			points: "-50,-88 0,-175 50,-88",
			transform: "rotate(" + degRotation + ")",
			"stroke-width": 3
		},
		on: {click: [triangleClick, id]}
	});

const view = (data) =>
	h("div.view", [
		h("h1", "Snabbdom SVG Carousel"),
		h("svg", {attrs: {width: 380, height: 380, viewBox: [-190, -190, 380, 380]}}, [
			h("g#carousel",
				{style: {"-webkit-transform": gRotation(), transform: gRotation()}}, [
				hTriangle("yellow", 0),
				hTriangle("green", 60),
				hTriangle("magenta", 120),
				hTriangle("red", 180),
				hTriangle("cyan", 240),
				hTriangle("blue", 300)
			])
		]),
		h("button", {on: {click: [handleRotate, 60]}}, "Rotate Clockwise"),
		h("button", {on: {click: [handleRotate, -60]}}, "Rotate Anticlockwise"),
		h("button", {on: {click: [handleReset, 0]}}, "Reset")
	]);

window.addEventListener("DOMContentLoaded", () => {
	var container = document.getElementById("container");
	vnode = patch(container, view(data));
	render();
});
